
import { reactive } from "vue"
// 校验函数
// 校验用户名
export const validateUsername = (rule, value, callback) => {
    //  英文，字母，数字，下划线或短横线3-16未
    let reg = /^[a-zA-Z0-9-_]{3,16}$/
    console.log(value);
    if (reg.test(value)) {
        callback()
    } else {
        callback(new Error('用户名必须由英文，字母，数字，下划线或短横线组成'))
    }
}

// 校验密码
export const validatePassword = (rule, value, callback) => {
    // console.log(value,"ooooo");
    if (value) {
        callback()
    } else {
        callback(new Error('密码不能为空'))
    }
}

// 校验验证码
export const validateCapture = (rule, value, callback) => {
    // console.log(value,"llll");
    if (value.length < 5) {
        callback(new Error('验证码不能小于5位数'))
    } else {
        callback()
    }
}       

// 校验手机号
export const validatePhone = (rule, value, callback) => {
    console.log(value,"222");
    let reg = /^1((34[0-8])|(8\d{2})|(([35][0-35-9]|4[579]|66|7[35678]|9[1389])\d{1}))\d{7}$/
    console.log(value);
    if (reg.test(value)) {
        callback()
    } else {
        callback(new Error('手机号格式不正确'))
    }
}
// 校验验证码

export const validateCode= (rule, value, callback) => {
    console.log(value,"222");

    if (value.length < 5) {
        callback(new Error('验证码不能小于5位数'))
    } else {
        callback()
    }
}


// 常规校验规则

// 校验规则
export const rules = reactive({
    username: [{ validator: validateUsername, trigger: 'blur' }],
    password: [{ validator: validatePassword, trigger: 'blur' }],
    capture: [{ validator: validateCapture, trigger: 'blur' }],
})

// 手机登陆校验规则
export const smsRules = reactive({
    phone: [{ validator: validatePhone, trigger: 'blur' }],
    code: [{ validator: validateCode, trigger: 'blur' }],
  
})

/**
* 
* @param {Object} formEl 表单引用对象
* @param {Function} successCallback 表单校验成功
* @param {Function} faildCallback 表单校验失败
*/

export const useSubmitForm = (successCallback, faildCallback) => (formEl) => {
    // console.log(formEl);
    if (!formEl) return
    // 调用组件提供的校验方法
    formEl.validate((valid) => {
        //如果所有的表单校验通过, valid就是true ,不然就是false
    
            // 登陆请求可在此处发送
           if(valid){
            if (successCallback) {
                successCallback()
            // console.log('submit!')
            }
           }else {
            // console.log('error submit!')
            if (faildCallback) {
                faildCallback(false)
            }
              return false
        }
    })
}